/*!
 * jQuery UI Core 1.10.3
 * http://jqueryui.com
 *
 * Copyright 2013 jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
 * http://api.jqueryui.com/category/ui-core/
 */
//(function( $, undefined ) {
define("component/jcore", [], function (require, exports, module) {
    var uuid = 0,
	    runiqueId = /^ui-id-\d+$/;

    // $.ui might exist from components with no dependencies, e.g., $.ui.position
    $.ui = $.ui || {};

    $.extend( $.ui, {
	    version: "1.10.3",

	    keyCode: {
		    BACKSPACE: 8,
		    COMMA: 188,
		    DELETE: 46,
		    DOWN: 40,
		    END: 35,
		    ENTER: 13,
		    ESCAPE: 27,
		    HOME: 36,
		    LEFT: 37,
		    NUMPAD_ADD: 107,
		    NUMPAD_DECIMAL: 110,
		    NUMPAD_DIVIDE: 111,
		    NUMPAD_ENTER: 108,
		    NUMPAD_MULTIPLY: 106,
		    NUMPAD_SUBTRACT: 109,
		    PAGE_DOWN: 34,
		    PAGE_UP: 33,
		    PERIOD: 190,
		    RIGHT: 39,
		    SPACE: 32,
		    TAB: 9,
		    UP: 38
	    }
    });

    // plugins
    $.fn.extend({
	    focus: (function( orig ) {
		    return function( delay, fn ) {
			    return typeof delay === "number" ?
				    this.each(function() {
					    var elem = this;
					    setTimeout(function() {
						    $( elem ).focus();
						    if ( fn ) {
							    fn.call( elem );
						    }
					    }, delay );
				    }) :
				    orig.apply( this, arguments );
		    };
	    })( $.fn.focus ),

	    scrollParent: function() {
		    var scrollParent;
		    if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
			    scrollParent = this.parents().filter(function() {
				    return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
			    }).eq(0);
		    } else {
			    scrollParent = this.parents().filter(function() {
				    return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
			    }).eq(0);
		    }

		    return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent;
	    },

	    zIndex: function( zIndex ) {
		    if ( zIndex !== undefined ) {
			    return this.css( "zIndex", zIndex );
		    }

		    if ( this.length ) {
			    var elem = $( this[ 0 ] ), position, value;
			    while ( elem.length && elem[ 0 ] !== document ) {
				    // Ignore z-index if position is set to a value where z-index is ignored by the browser
				    // This makes behavior of this function consistent across browsers
				    // WebKit always returns auto if the element is positioned
				    position = elem.css( "position" );
				    if ( position === "absolute" || position === "relative" || position === "fixed" ) {
					    // IE returns 0 when zIndex is not specified
					    // other browsers return a string
					    // we ignore the case of nested elements with an explicit value of 0
					    // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
					    value = parseInt( elem.css( "zIndex" ), 10 );
					    if ( !isNaN( value ) && value !== 0 ) {
						    return value;
					    }
				    }
				    elem = elem.parent();
			    }
		    }

		    return 0;
	    },

	    uniqueId: function() {
		    return this.each(function() {
			    if ( !this.id ) {
				    this.id = "ui-id-" + (++uuid);
			    }
		    });
	    },

	    removeUniqueId: function() {
		    return this.each(function() {
			    if ( runiqueId.test( this.id ) ) {
				    $( this ).removeAttr( "id" );
			    }
		    });
	    }
    });

    // selectors
    function focusable( element, isTabIndexNotNaN ) {
	    var map, mapName, img,
		    nodeName = element.nodeName.toLowerCase();
	    if ( "area" === nodeName ) {
		    map = element.parentNode;
		    mapName = map.name;
		    if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
			    return false;
		    }
		    img = $( "img[usemap=#" + mapName + "]" )[0];
		    return !!img && visible( img );
	    }
	    return ( /input|select|textarea|button|object/.test( nodeName ) ?
		    !element.disabled :
		    "a" === nodeName ?
			    element.href || isTabIndexNotNaN :
			    isTabIndexNotNaN) &&
		    // the element and all of its ancestors must be visible
		    visible( element );
    }

    function visible( element ) {
	    return $.expr.filters.visible( element ) &&
		    !$( element ).parents().addBack().filter(function() {
			    return $.css( this, "visibility" ) === "hidden";
		    }).length;
    }

    $.extend( $.expr[ ":" ], {
	    data: $.expr.createPseudo ?
		    $.expr.createPseudo(function( dataName ) {
			    return function( elem ) {
				    return !!$.data( elem, dataName );
			    };
		    }) :
		    // support: jQuery <1.8
		    function( elem, i, match ) {
			    return !!$.data( elem, match[ 3 ] );
		    },

	    focusable: function( element ) {
		    return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
	    },

	    tabbable: function( element ) {
		    var tabIndex = $.attr( element, "tabindex" ),
			    isTabIndexNaN = isNaN( tabIndex );
		    return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
	    }
    });

    // support: jQuery <1.8
    if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
	    $.each( [ "Width", "Height" ], function( i, name ) {
		    var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
			    type = name.toLowerCase(),
			    orig = {
				    innerWidth: $.fn.innerWidth,
				    innerHeight: $.fn.innerHeight,
				    outerWidth: $.fn.outerWidth,
				    outerHeight: $.fn.outerHeight
			    };

		    function reduce( elem, size, border, margin ) {
			    $.each( side, function() {
				    size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
				    if ( border ) {
					    size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
				    }
				    if ( margin ) {
					    size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
				    }
			    });
			    return size;
		    }

		    $.fn[ "inner" + name ] = function( size ) {
			    if ( size === undefined ) {
				    return orig[ "inner" + name ].call( this );
			    }

			    return this.each(function() {
				    $( this ).css( type, reduce( this, size ) + "px" );
			    });
		    };

		    $.fn[ "outer" + name] = function( size, margin ) {
			    if ( typeof size !== "number" ) {
				    return orig[ "outer" + name ].call( this, size );
			    }

			    return this.each(function() {
				    $( this).css( type, reduce( this, size, true, margin ) + "px" );
			    });
		    };
	    });
    }

    // support: jQuery <1.8
    if ( !$.fn.addBack ) {
	    $.fn.addBack = function( selector ) {
		    return this.add( selector == null ?
			    this.prevObject : this.prevObject.filter( selector )
		    );
	    };
    }

    // support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
    if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
	    $.fn.removeData = (function( removeData ) {
		    return function( key ) {
			    if ( arguments.length ) {
				    return removeData.call( this, $.camelCase( key ) );
			    } else {
				    return removeData.call( this );
			    }
		    };
	    })( $.fn.removeData );
    }





    // deprecated
    $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );

    $.support.selectstart = "onselectstart" in document.createElement( "div" );
    $.fn.extend({
	    disableSelection: function() {
		    return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
			    ".ui-disableSelection", function( event ) {
				    event.preventDefault();
			    });
	    },

	    enableSelection: function() {
		    return this.unbind( ".ui-disableSelection" );
	    }
    });

    $.extend( $.ui, {
	    // $.ui.plugin is deprecated. Use $.widget() extensions instead.
	    plugin: {
		    add: function( module, option, set ) {
			    var i,
				    proto = $.ui[ module ].prototype;
			    for ( i in set ) {
				    proto.plugins[ i ] = proto.plugins[ i ] || [];
				    proto.plugins[ i ].push( [ option, set[ i ] ] );
			    }
		    },
		    call: function( instance, name, args ) {
			    var i,
				    set = instance.plugins[ name ];
			    if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {
				    return;
			    }

			    for ( i = 0; i < set.length; i++ ) {
				    if ( instance.options[ set[ i ][ 0 ] ] ) {
					    set[ i ][ 1 ].apply( instance.element, args );
				    }
			    }
		    }
	    },

	    // only used by resizable
	    hasScroll: function( el, a ) {

		    //If overflow is hidden, the element might have extra content, but the user wants to hide it
		    if ( $( el ).css( "overflow" ) === "hidden") {
			    return false;
		    }

		    var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
			    has = false;

		    if ( el[ scroll ] > 0 ) {
			    return true;
		    }

		    // TODO: determine which cases actually cause this to happen
		    // if the element doesn't have the scroll set, see if it's possible to
		    // set the scroll
		    el[ scroll ] = 1;
		    has = ( el[ scroll ] > 0 );
		    el[ scroll ] = 0;
		    return has;
	    }
    });

});
